#include <iostream>
using namespace std;
//int main()
//{
//    int x; cin >> x;
//    int cnt = 0;
//    while (x)
//    {
//        x &= (x - 1);
//        cnt++;
//    }
//    cout << cnt << endl;
//    return 0;
//}

//int a[100005];
//int main()
//{
//    int n, q; cin >> n >> q;
//    for (int i = 1; i <= n; i++) cin >> a[i];
//    while (q--)
//    {
//        int l, r; cin >> l >> r;
//        int tem = 0;
//        for (int i = l; i <= r; i++) {
//            tem |= a[i];
//        }
//        cout << tem << endl;
//    }
//    return 0;
//}

const int N = 1e5 + 5;
int a[N], prex[35][N];
int main()
{
    int n, q; cin >> n >> q;
    for (int i = 1; i <= n; i++) cin >> a[i];
    for (int w = 0; w <= 30; w++) {
        for (int i = 1; i <= n; i++)prex[w][i] = prex[w][i - 1] + ((a[i] >> w) & 1);
    }
    while (q--)
    {
        int l, r; cin >> l >> r;
        int ans = 0;
        for (int w = 0; w <= 30; w++) {
            ans += (1 << w) * (prex[w][r] - prex[w][l - 1] ? 1 : 0);
        }
        cout << ans << endl;
    }
    return 0;
}